package com.cedancp.hometrade;

import java.util.Calendar;

import org.json.JSONException;
import org.json.JSONObject;

import library.DatabaseHandler;
import library.UserFunctions;
import android.os.Bundle;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class RegisterActivity extends Activity {
	
	EditText txt_nombre;
	EditText txt_email;
	EditText txt_nick;
	EditText txt_telefono;
	EditText txt_password;
	TextView date_nacimiento;
	Button btn_registrar;
	Button btn_regresar;
	String mensaje;
	Calendar dateTime=Calendar.getInstance();
	
    private static String KEY_NAME = "name";
    private static String KEY_SUCCESS = "success";
    private static String KEY_NICK= "nick";
    private static String KEY_TELEFONO = "telefono";
    private static String KEY_UID = "uid";
    private static String KEY_EMAIL = "email";
    private static String KEY_CREATED_AT = "created_at";
    private static String KEY_ERROR = "error_msg";
    

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_register);
		
		//Importar elementos del layout
		txt_nombre=(EditText) findViewById(R.id.txt_nombre);
		txt_email=(EditText) findViewById(R.id.txt_email);
		txt_nick=(EditText) findViewById(R.id.txt_nick);
		txt_telefono=(EditText) findViewById(R.id.txt_telefono);
		txt_password=(EditText) findViewById(R.id.txt_password);
		date_nacimiento=(TextView) findViewById(R.id.lbl_fechaNac);
		btn_registrar=(Button) findViewById(R.id.btn_registrar);
		btn_regresar=(Button) findViewById(R.id.btn_regresar);
		
		updateLabel();
		
		//Evento del boton registrar
		btn_registrar.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View view) {
				String nombre = txt_nombre.getText().toString();
				String email = txt_email.getText().toString();
				String nombre_usuario = txt_nick.getText().toString();
				String telefono = txt_telefono.getText().toString();
				String password = txt_password.getText().toString();
				String fecha_nacimiento=date_nacimiento.getText().toString();
				UserFunctions userFunction=new UserFunctions();
				JSONObject json = userFunction.registerUser(nombre, nombre_usuario, telefono, fecha_nacimiento, email, password);
				
				//Validar el registro
				try {
					if(json.getString(KEY_SUCCESS) !=null){
						mensaje="";
						String res=json.getString(KEY_SUCCESS);
						if(Integer.parseInt(res)== 1){
							//El usuario se registro correctamente
							//Guardar datos en SQLDatabase
							mensaje="Registro de usuario exitoso";
							
							DatabaseHandler db= new DatabaseHandler(getApplicationContext());
							JSONObject json_user=json.getJSONObject("user");
							
							//Borrar toda la informacion previa en la base de datos
							
							userFunction.logoutUser(getApplicationContext());
							db.addUser(json_user.getString(KEY_NAME), json_user.getString(KEY_NICK), json_user.getString(KEY_TELEFONO), json_user.getString(KEY_EMAIL), json_user.getString(KEY_UID), json_user.getString(KEY_CREATED_AT));
							
							//Lanzar pantalla de lista de publicaciones
							Intent listaPublicaciones = new Intent(getApplicationContext(), ListaPublicaciones.class);
							
							//Cerrar todas las vistas antes de lanzar ListaPublicaiones
							listaPublicaciones.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
							startActivity(listaPublicaciones);
							
							//Cerrar pantalla de registro
							finish();
						}else{
							//Error de registro
							mensaje=json.getString(KEY_ERROR);
						}
					}
					Context context = getApplicationContext();
					int duration = Toast.LENGTH_SHORT;

					Toast toast = Toast.makeText(context, mensaje, duration);
					toast.show();
						
				} catch (JSONException e) {
					e.printStackTrace();
				}
				
				
			}
		});
		
		//Buton para regresar a la pantalla de login
		btn_regresar.setOnClickListener(new View.OnClickListener() {
			
			public void onClick(View v) {
				Intent i=new Intent(getApplicationContext(), MainActivity.class);
				startActivity(i);
				finish();
				
			}
		});
		
	}
	
	public void chooseDate(View view){
    	new DatePickerDialog(RegisterActivity.this, d, dateTime.get(Calendar.YEAR),dateTime.get(Calendar.MONTH), dateTime.get(Calendar.DAY_OF_MONTH)).show();
    }
	
	DatePickerDialog.OnDateSetListener d=new DatePickerDialog.OnDateSetListener() {
		@Override
		public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
			dateTime.set(Calendar.YEAR,year);
			dateTime.set(Calendar.MONTH, monthOfYear);
			dateTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);
			updateLabel();
		}
	};
	
	private void updateLabel() {
		date_nacimiento.setText(dateTime.get(Calendar.YEAR)+"-"+(dateTime.get(Calendar.MONTH)+1)+"-"+dateTime.get(Calendar.DAY_OF_MONTH));
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.register, menu);
		return true;
	}

	//Creando los eventos de las opciones de menu
	@Override
    public boolean onOptionsItemSelected(MenuItem item){
    	switch (item.getItemId()) {
    	
		case R.id.acercaDe:
			Intent iAcercaDe = new Intent(getApplicationContext(), AcercaDe.class);
			startActivity(iAcercaDe);
			return true;

		default:
			return super.onOptionsItemSelected(item);
		}
    }
}
